#ifndef ETH_TX_H_
#define ETH_TX_H_

		//!	@brief				Связывает объект с аппаратным модулем.
		/*!	@param	base_addr	Адрес аппаратного модуля
		 */
		alt_u8 eth_tx_init(alt_u32 addr);

		//!	@brief 				Метод позволяет сбросить аппаратный модуль
		/*!	@param				Нет
		 *  @return	0
		 */
		alt_u8 eth_tx_reset();

		//! @brief 				Метод позволяет задать размер передаваемого пакета
		/*!	@param		size	Размер пакета в байтах
		 *  @return	0
		 */
		alt_u8 eth_tx_set_size(alt_u32 size);

		//! @brief 				Метод позволяет задать MAC источника
		/*!	@param	mac			Массив байт с MAC источника
		 *  @return	0
		 */
		alt_u8 eth_tx_set_smac(alt_u64 mac);

		//! @brief 				Метод позволяет задать MAC приемника
		/*!	@param	mac			Массив байт с MAC приемника
		 *  @return	0
		 */
		alt_u8 eth_tx_set_dmac(alt_u64 mac);

		//! @brief 				Метод позволяет задать тип протокола.
		/*!	@param	etype		Тип протокола.
		 *  @return	0
		 */
		alt_u8 eth_tx_set_etype(alt_u16 etype);

		//! @brief 				Метод запуска отправки пакета
		/*!	@param	addr		Адрес памяти, откуда брать банные
		 *  @return	0
		 */
		alt_u8 eth_tx_send(alt_u32 addr, alt_u16 size);

		//! @brief 				Получить состояние передатчика
		/*!	@param				Нет
		 *  @return	err			0 если не занят
		 */
		alt_u8 eth_tx_get_state();


		//! Регистр управления
		typedef union	eth_tx_cmd_reg_u
		{
			struct
			{
				alt_u32		cmd		:4;			//!< Команда
				alt_u32		res		:28;		//!< Резерв
			};
			alt_u32			data;
		}eth_tx_cmd_reg_t;


		//! Регистр статуса модуля
		typedef union eth_tx_status_reg_u
		{
			struct
			{
				alt_u32		busy	:1;			//!< Передатчик занят
				alt_u32		res		:31;		//!< Резерв
			};
			alt_u32			data;
		}eth_tx_status_reg_t;


#endif /* ETH_TX_H_ */
